package com.newshub.business.service;

import com.newshub.business.entity.Category;
import com.newshub.business.dto.CategoryQueryDTO;
import com.newshub.business.dto.PageResult;
import java.util.List;
import java.util.Map;

/**
 * 分类服务接口
 */
public interface CategoryService {
    
    /**
     * 获取所有分类
     * @return 分类列表
     */
    List<Category> getAllCategories();
    
    /**
     * 根据ID获取分类
     * @param id 分类ID
     * @return 分类对象
     */
    Category getCategoryById(Integer id);
    
    /**
     * 根据名称获取分类
     * @param name 分类名称
     * @return 分类对象
     */
    Category getCategoryByName(String name);
    
    /**
     * 添加分类
     * @param category 分类对象
     * @return 是否成功
     */
    boolean addCategory(Category category);
    
    /**
     * 更新分类
     * @param category 分类对象
     * @return 是否成功
     */
    boolean updateCategory(Category category);
    
    /**
     * 删除分类
     * @param id 分类ID
     * @return 是否成功
     */
    boolean deleteCategory(Integer id);
    
    /**
     * 分页查询分类
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<Category> getCategoryPage(CategoryQueryDTO queryDTO);
    
    /**
     * 更新分类状态
     * @param id 分类ID
     * @param status 新状态
     * @return 是否成功
     */
    boolean updateCategoryStatus(Integer id, Integer status);
    
    /**
     * 批量删除分类
     * @param ids 分类ID列表
     * @return 是否成功
     */
    boolean batchDeleteCategories(List<Integer> ids);
    
    /**
     * 根据编码获取分类
     * @param code 分类编码
     * @return 分类对象
     */
    Category getCategoryByCode(String code);

    // ==================== 统计功能 ====================
    
    /**
     * 获取分类统计数据
     * @return 分类统计数据
     */
    Map<String, Object> getCategoryStats();
}